// 二次封装axios 拦截器
import axios from 'axios'
import config from '../config/index'
// baseUrl:{
//         //开发环境
//         dev:'/api/',
//         pro:''
//     }
// 设置配置 根据开发 和 生产环境不一样 
const baseUrl = process.env.NODE_ENV === 'development' ? config.baseUrl.dev : config.baseUrl.pro
class HttpRequst {
  constructor(baseUrl) {
    this.baseUrl = baseUrl
  }
  getInsideConfig() {
    const config = {
      baseURL: this.baseUrl,
      header: {
        "Content-Type": "application/json;charset=utf-8"
      },
      timeout: 5000, // request timeout  设置请求超时时间
      responseType: "json"
    }
    return config
  }


//   // http request 拦截器
//  axios.interceptors.request.use(config => {
//       if (store.state.token) { // 判断是否存在token，如果存在的话，则每个http header都加上token 
//         config.headers.Authorization = `token ${store.state.token}`; 
//         return config; 
//       }}, 
//         err => { return Promise.reject(err)}; 
//         ); 
//         // http response 拦截器 
// axios.interceptors.response.use( response => { return response; }, error => { if (error.response) 
//   { switch (error.response.status)
//    { case 401: 401 ,  // 返回 401 清除token信息并跳转到登录页面 
//    store.commit(types.LOGOUT); 
//    router.replace({ path: 'login', query: {redirect: router.currentRoute.fullPath} }) } }
//          return Promise.reject(error.response.data) 
//          // 返回接口返回的错误信息
//    });


  interceptors(instance) {
    instance.interceptors.request.use(function (config) {
      // 在发送请求之前做些什么
      
      console.log('拦截处理请求');
      return config;
    }, function (error) {
      // 对请求错误做些什么
      return Promise.reject(error);
    });

    instance.interceptors.response.use(function (response) {
      console.log('处理相应');
      // 对响应数据做点什么
      return response.data;
    }, function (error) {
      console.log(error);
      // 对响应错误做点什么
     
      return Promise.reject(error);
    });
  }
  // {
  //   baseURL:'/rApi'
  // }
  request(options) {
    // 请求
    // /api/getList  /api/getHome
    const instanse = axios.create()
    // 技巧
    // /api 
    options = { ...(this.getInsideConfig()), ...options }
    console.log(options);
    console.log(this);
    this.interceptors(instanse)
    return instanse(options)
  }
}

export default new HttpRequst(baseUrl)